﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Data;
using System.Data.SqlClient;

/// <summary>
/// Đây là nơi chưa tất cả các method xử lý database của University
/// </summary>
public class UniversityDatabaseManagerment
{
	public UniversityDatabaseManagerment()
	{
	}

    /// <summary>
    /// Method này có nhiệm vụ trả về connection để sử dụng
    /// </summary>
    /// <returns>SqlConnection kết nối tới database</returns>
    public SqlConnection createConnection() {
        try
        {
            // Lấy connection strign từ trong web.config
            string conString = System.Configuration.ConfigurationManager.ConnectionStrings["PokemonUniversityConnectionString"].ConnectionString;

            SqlConnection conn = new SqlConnection(conString);
            
            return conn;
        }
        catch (Exception)
        {
            return null;
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị các tin tức mới sắp xếp theo thời gian
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showNewsByDateTime(SqlConnection conn) {
        try
        {
            conn.Open();
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showNewsByDateTime";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị các tin tức mới để maintain
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showNewsForMaintain(SqlConnection conn)
    {
        try
        {
            conn.Open();
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showNewsForMaintain";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị 9 tin tức mới sắp xếp theo thời gian cho trang chu
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet show9NewsByDateTime(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_show9NewsByDateTime";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị tin tức mới đầu tiên
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showFirstNewsByDateTime(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showFirstNewsByDateTime";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị tin tức theo id
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showNewByID(SqlConnection conn, int id)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_showNewByID";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@nID", id));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị các sự kiện mới sắp xếp theo thời gian
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showEventsByDateTime(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showEventsByDateTime";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị sự kiện mới để maintain
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showEventsForMaintain(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showEventsForMaintain";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị 4 sự kiện mới sắp xếp theo thời gian cho trang chu
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet show4EventsByDateTime(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_show4EventsByDateTime";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị sự kiện mới đầi tiên sắp xếp theo thời gian
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showFirstEventsByDateTime(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showFirstEventsByDateTime";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị sự kiện theo id
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showEventsByID(SqlConnection conn, int id)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_showEventsByID";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@eID", id));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ method hiển thị danh sách các lớp mà một giáo viên dạy
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showCoursesOfTeacher(SqlConnection conn, int teachID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_showCoursesOfTeacher";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@teachID", teachID));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ method hiển thị danh sách các lớp mà một giáo viên dạy
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showCoursesOfTeacherNext(SqlConnection conn, int teachID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_showCoursesOfTeacherNext";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@teachID", teachID));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ method hiển thị danh sách học sinh của một khóa học
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showStudentsOfCourse(SqlConnection conn, int courseID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_showAllStudentOfCourse";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@cID", courseID));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ method hiển thị thông tin khóa học theo id
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về dataset chứa tất cả thông tin của coursec</returns>
    public DataSet showCoursesByID(SqlConnection conn, int courseID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_showCoursesByID";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@courseID", courseID));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ method hiển thị điểm học sinh thông qua mã học sinh và mã khóa học
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showMarkBystuIDCourseID(SqlConnection conn, string stuID, int lCourseID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_showMarkBystuIDCourseID";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@stuID",stuID.ToString()));


            comm.Parameters.Add(new SqlParameter("@lcourseID", lCourseID));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ sửa điểm cho học sinh 
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool updateMarkByStudentID(SqlConnection conn, string stuID, int lCourseID, decimal lMark)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_updateMarkByStudentID";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@stuID", SqlDbType.Char));

            comm.Parameters.Add(new SqlParameter("@lcourseID", SqlDbType.Int));

            comm.Parameters.Add(new SqlParameter("@Mark", SqlDbType.Decimal));

            comm.Parameters.Add(new SqlParameter("@Pass", SqlDbType.Bit));

            comm.Parameters["@stuID"].Value = stuID;
            comm.Parameters["@lcourseID"].Value = lCourseID;
            comm.Parameters["@Mark"].Value = lMark;

            CheckValid checkP = new CheckValid();
            //Biến lưu giá trị điều kiện qua môn
            int pass = checkP.checkPass(lMark);
            comm.Parameters["@Pass"].Value = pass;
            //Thực thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();

            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ sửa khóa học thành kết thúc
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool updateCourseEnd(SqlConnection conn, int courseID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_updateCourseEnd";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            comm.Parameters.Add(new SqlParameter("@courseID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            adapt.SelectCommand.Parameters[0].Value = courseID;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);
            adapt.Update(ds);

            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ sửa khóa học dang ky
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool updateCourseRegis(SqlConnection conn, int courseID, int endRegis)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_updateCourseRegis";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            comm.Parameters.Add(new SqlParameter("@courseID", SqlDbType.Int));
            comm.Parameters.Add(new SqlParameter("@endregis", SqlDbType.Bit));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            adapt.SelectCommand.Parameters["@courseID"].Value = courseID;
            adapt.SelectCommand.Parameters["@endregis"].Value = endRegis;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);
            adapt.Update(ds);

            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị các khóa học sắp xếp theo thời gian
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các khóa học</returns>
    public DataSet showNewCoursesByDateStart(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showNewCoursesByDateStart";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }
    /// <summary>
    /// Method có nhiệm vụ hiển thị các khóa học sắp xếp theo thời gian 2
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các khóa học</returns>
    public DataSet showCoursesForMaintain(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showCoursesForMaintain";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị các khóa học sắp xếp theo thời gian 2
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các khóa học</returns>
    public DataSet showCoursesForMaintainNotEndRegis(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showCoursesForMaintainNotEndRegis";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị các khóa học sắp xếp theo thời gian 2
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các khóa học</returns>
    public DataSet showCoursesForMaintainEventEnd(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showCoursesForMaintainEventEnd";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }


    /// <summary>
    /// Method có nhiệm vụ hiển thị các khóa học chưa kết thúc đăng ký
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các khóa học</returns>
    public DataSet showNewCoursesNotEndRegist(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showNewCoursesNotEndRegist";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị 9 khóa học sắp xếp theo thời gian cho trang chu
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các khóa học</returns>
    public DataSet show9NewCoursesByDateStart(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_show9NewCoursesByDateStart";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị các thành tựu của trường
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các thành tựu</returns>
    public DataSet showAllAchievements(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showAllAchievements";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị 7 thành tựu của trường cho trang chủ
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các thành tựu</returns>
    public DataSet show6Achievements(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_show6Achievements";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ  hiển thị tất cả điểm của một học sinh nào đó 
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public DataSet showMarkByIDstudent(SqlConnection conn, string stuID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_showMarkByIDstudent";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@stuID", stuID));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ  hiển thị thời khóa biểu của 1 học sinh nào đó
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public DataSet showTimeTableByIDstudent(SqlConnection conn, string stuID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_showTimeTableByIDstudent";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@stuID", stuID));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ  hiển thị thời khóa biểu của 1 học sinh nào đó
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public DataSet showTimeTableByIDstudentNext(SqlConnection conn, string stuID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_showTimeTableByIDstudentNext";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@stuID", stuID));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ thêm bản đăng ký mới của học sinh
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool addNewStudent(SqlConnection conn, string firstName, string lastName, int gender, DateTime dateOfBirth,string street, string state,string city, string phoneNumber,string email,string  image)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_addNewStudent";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@aFirstName", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@aLastName", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@aGender", SqlDbType.Bit));

            comm.Parameters.Add(new SqlParameter("@aDateOfBirth", SqlDbType.DateTime));

            comm.Parameters.Add(new SqlParameter("@aStreetAddress", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@aState", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@aCity", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@aPhoneNumber", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@aEmail", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@aImage", SqlDbType.VarChar));

            comm.Parameters["@aFirstName"].Value = firstName;
            comm.Parameters["@aLastName"].Value = lastName;
            comm.Parameters["@aGender"].Value = gender;
            comm.Parameters["@aDateOfBirth"].Value = dateOfBirth;
            comm.Parameters["@aStreetAddress"].Value = street;
            comm.Parameters["@astate"].Value = state;
            comm.Parameters["@aCity"].Value = city;
            comm.Parameters["@aPhoneNumber"].Value = phoneNumber;
            comm.Parameters["@aEmail"].Value = email;
            comm.Parameters["@aImage"].Value = image;

            //Thực thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();

            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// tao method thay đổi trạng thái bản đăng ký nhập học thành chấp nhận
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool updateAdmission(SqlConnection conn, int nID, int aStatus)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_updateAdmission";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@aID", SqlDbType.Int));

            comm.Parameters.Add(new SqlParameter("@aStatus", SqlDbType.Int));

            comm.Parameters["@aID"].Value = nID;
            comm.Parameters["@aStatus"].Value = aStatus;
            
            //Thực thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();

            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }
    /// <summary>
    /// Method có nhiệm vụ thêm sự kiện mới 
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool addNewEvent(SqlConnection conn, string eTitle, DateTime eDateTime, DateTime eDateEnd, string eLocation, string eImage, string eContent)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_addNewEvent";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@eTitle", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@eDateTime", SqlDbType.DateTime));

            comm.Parameters.Add(new SqlParameter("@eDateEnd", SqlDbType.DateTime));

            comm.Parameters.Add(new SqlParameter("@eLocation", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@eImage", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@eContent", SqlDbType.VarChar));

            CheckValid checkP = new CheckValid();
            if (checkP.checkDate(eDateTime)==1)
            {

                comm.Parameters["@eTitle"].Value = eTitle;

                comm.Parameters["@eDateTime"].Value = eDateTime;

                comm.Parameters["@eDateEnd"].Value = eDateEnd;

                comm.Parameters["@eLocation"].Value = eLocation;

                comm.Parameters["@eImage"].Value = eImage;

                comm.Parameters["@eContent"].Value = eContent;

                //Thực thi
                comm.Connection.Open();
                comm.ExecuteNonQuery();
                comm.Connection.Close();
                return true;

            }else{

                return false;

            }

            }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }
    /// <summary>
    /// Method có nhiệm vụ thêm sự kiện mới mà ngày tháng của event là ngày hiện tại
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool addNewEventNow(SqlConnection conn, string eTitle, string eLocation, string eImage, string eContent)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_addNewEvent";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@eTitle", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@eDateTime", SqlDbType.DateTime));

            comm.Parameters.Add(new SqlParameter("@eLocation", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@eImage", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@eContent", SqlDbType.VarChar));


            DateTime dateNow = DateTime.Now;

                comm.Parameters["@eTitle"].Value = eTitle;

                comm.Parameters["@eDateTime"].Value = dateNow;

                comm.Parameters["@eLocation"].Value = eLocation;

                comm.Parameters["@eImage"].Value = eImage;

                comm.Parameters["@eContent"].Value = eContent;

                //Thực thi
                comm.Connection.Open();
                comm.ExecuteNonQuery();
                comm.Connection.Close();
                return true;

           

        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// tao method update events
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool updateEvents(SqlConnection conn, int eID, string eTitle, DateTime eDateTime, DateTime eDateEnd, string eLocation, string eImage, string eContent)
    {
        try
        {
            //Tao SqlCommand de chay Store procedure
            SqlCommand comm = new SqlCommand();
            //Command text 
            comm.CommandText = "sp_updateEvent";
            //Command type
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen vao connection cho command
            comm.Connection = conn;
            //Truyen tham so cho store
            comm.Parameters.Add(new SqlParameter("@eID", SqlDbType.Int));
            comm.Parameters.Add(new SqlParameter("@eTitle", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@eDateTime", SqlDbType.DateTime));
            comm.Parameters.Add(new SqlParameter("@eDateEnd", SqlDbType.DateTime));
            comm.Parameters.Add(new SqlParameter("@eLocation", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@eImage", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@eContent", SqlDbType.VarChar));
            //Truyen gia tri cho Store
            comm.Parameters["@eID"].Value = eID;
            comm.Parameters["@eTitle"].Value = eTitle;
            comm.Parameters["@eDateTime"].Value = eDateTime;
            comm.Parameters["@eDateEnd"].Value = eDateEnd;
            comm.Parameters["@eLocation"].Value = eLocation;
            comm.Parameters["@eImage"].Value = eImage;
            comm.Parameters["@eContent"].Value = eContent;
            CheckValid check = new CheckValid();
            //Thuc thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();

            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method xoa su kien
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>

    public bool removeEvent(SqlConnection conn, int eID)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_removeEvent";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@eID", SqlDbType.Int));

            //Truyen gia tri cho Store
            comm.Parameters["@eID"].Value = eID;

            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }
    /// <summary>
    /// method xoa môn
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>

    public bool removeSubject(SqlConnection conn, string eID)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_removeSubject";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@sID", SqlDbType.Char));

            //Truyen gia tri cho Store
            comm.Parameters["@sID"].Value = eID;

            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ thêm tin tức mới mà ngày tháng  là ngày hiện tại
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool addNewNewsNow(SqlConnection conn, string nTitle, string nDesciption, string nImage, string nContent)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_addNews";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@nTitle", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@nDateTime", SqlDbType.DateTime));

            comm.Parameters.Add(new SqlParameter("@nDescription", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@nImage", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@nContent", SqlDbType.VarChar));

            

            DateTime dateNow = DateTime.Now;

            comm.Parameters["@nTitle"].Value = nTitle;

            comm.Parameters["@nDateTime"].Value = dateNow;

            comm.Parameters["@nDescription"].Value = nDesciption;

            comm.Parameters["@nImage"].Value = nImage;

            comm.Parameters["@nContent"].Value = nContent;

            //Thực thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;


        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// tao method update news
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool updateNews(SqlConnection conn, int nID, string nTitle, DateTime nDateTime, string nDescription, string nImage, string nContent)
    {
        try
        {
            //Tao Command de chay Store 
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_updateNews";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection vao comm
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@nID", SqlDbType.Int));
            comm.Parameters.Add(new SqlParameter("@nTitle", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@nDateTime", SqlDbType.DateTime));
            comm.Parameters.Add(new SqlParameter("@nDescription", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@nImage", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@nContent", SqlDbType.VarChar));
            //Truyen gia tri cho Store
            comm.Parameters["@nID"].Value = nID;
            comm.Parameters["@nTitle"].Value = nTitle;
            comm.Parameters["@nDateTime"].Value = nDateTime;
            comm.Parameters["@nDescription"].Value = nDescription;
            comm.Parameters["@nImage"].Value = nImage;
            comm.Parameters["@nContent"].Value = nContent;
            CheckValid check = new CheckValid();
            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }
    /// <summary>
    /// method xoa tin tuc
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>

    public bool removeNews(SqlConnection conn, int eID)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_removeNews";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@nID", SqlDbType.Int));

            //Truyen gia tri cho Store
            comm.Parameters["@nID"].Value = eID;

            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// tao method them moi course(ngay bat dau phai lon hon ngay hien tai)
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool addNewCourse(SqlConnection conn, string cName, string cSubjectID, int cTeacherID, DateTime cDateStart, string cLocation, string cDescription)
    {
        try
        {
            //Tao SqlCommand de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_addCourse";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection vao cho comm
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@cName", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@cSubjectID", SqlDbType.Char));
            comm.Parameters.Add(new SqlParameter("@cTeacherID", SqlDbType.Int));
            comm.Parameters.Add(new SqlParameter("@cDateStart", SqlDbType.DateTime));
            comm.Parameters.Add(new SqlParameter("@cLocation", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@cDescription", SqlDbType.VarChar));

            comm.Parameters["@cName"].Value = cName;
            comm.Parameters["@cSubjectID"].Value = cSubjectID;
            comm.Parameters["@cTeacherID"].Value = cTeacherID;
            comm.Parameters["@cDateStart"].Value = cDateStart;
            comm.Parameters["@cLocation"].Value = cLocation;
            comm.Parameters["@cDescription"].Value = cDescription;

            //Thuc thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// tao method update course
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>

    public bool updateCourse(SqlConnection conn, int cID, string cName, string cSubjectID, int cTeacherID, DateTime cDateStart, string cLocation, string cDescription)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_updateCourse";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@cID",SqlDbType.Int));
            comm.Parameters.Add(new SqlParameter("@cName",SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@cSubjectID",SqlDbType.Char));
            comm.Parameters.Add(new SqlParameter("@cTeacherID",SqlDbType.Int));
            comm.Parameters.Add(new SqlParameter("@cDateStart",SqlDbType.DateTime));
            comm.Parameters.Add(new SqlParameter("@cLocation",SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@cDescription",SqlDbType.VarChar));

            //Truyen gia tri cho Store
            comm.Parameters["@cID"].Value = cID;
            comm.Parameters["@cName"].Value = cName;
            comm.Parameters["@cSubjectID"].Value = cSubjectID;
            comm.Parameters["@cTeacherID"].Value = cTeacherID;
            comm.Parameters["@cDateStart"].Value = cDateStart;
            comm.Parameters["@cLocation"].Value = cLocation;
            comm.Parameters["@cDescription"].Value = cDescription;

            CheckValid check = new CheckValid();

            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }
    /// <summary>
    /// method xoa khóa học
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>

    public bool removeCourse(SqlConnection conn, int cID)
    {
        UniversityDatabaseManagerment udm = new UniversityDatabaseManagerment();

        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_removeCourse";

            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            
            //Truyen connection cho command
            comm.Connection = conn;
            
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@cID", SqlDbType.Int));

            //Truyen gia tri cho Store
            comm.Parameters["@cID"].Value = cID;    

            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            conn.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }
    /// <summary>
    /// method thêm mới phòng ban
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>

    public bool addDepartment(SqlConnection conn, string dName,string dDescription)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_addDepartment";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@dName",SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@dDescription",SqlDbType.VarChar));
            
            //Truyen gia tri cho Store
            comm.Parameters["@dName"].Value = dName;
            comm.Parameters["@dDescription"].Value = dDescription;
            
            

            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }
    /// <summary>
    /// method thêm mới phòng ban
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>

    public bool addSubject(SqlConnection conn, string ID, string dName, string dDescription,int lv)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_addSubject";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@subID", SqlDbType.Char));
            comm.Parameters.Add(new SqlParameter("@dName", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@dDescription", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@subLv", SqlDbType.Int));

            //Truyen gia tri cho Store
            comm.Parameters["@subID"].Value = ID;
            comm.Parameters["@dName"].Value = dName;
            comm.Parameters["@dDescription"].Value = dDescription;

            comm.Parameters["@subLv"].Value = lv;



            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }
    /// <summary>
    /// method sửa môn học
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>

    public bool updateSubject(SqlConnection conn, string ID, string dName, string dDescription, int lv)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_updateSubject";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@dID", SqlDbType.Char));
            comm.Parameters.Add(new SqlParameter("@dName", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@dDescription", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@subLv", SqlDbType.Int));

            //Truyen gia tri cho Store
            comm.Parameters["@dID"].Value = ID;
            comm.Parameters["@dName"].Value = dName;
            comm.Parameters["@dDescription"].Value = dDescription;
            comm.Parameters["@subLv"].Value = lv;



            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }
    /// <summary>
    /// method update phòng ban
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>

    public bool updateDepartment(SqlConnection conn,int dID ,string dName, string dDescription)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_updateDepartment";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@dID", SqlDbType.Int));
            comm.Parameters.Add(new SqlParameter("@dName", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@dDescription", SqlDbType.VarChar));

            //Truyen gia tri cho Store
            comm.Parameters["@dID"].Value = dID;
            comm.Parameters["@dName"].Value = dName;
            comm.Parameters["@dDescription"].Value = dDescription;



            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }
    
    /// <summary>
    /// method xoa phòng ban
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool removeDepartment(SqlConnection conn, int dID)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_removeDepartment";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@dID", SqlDbType.Int));
            
            //Truyen gia tri cho Store
            comm.Parameters["@dID"].Value = dID;
            


            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method thêm mới tiện nghi
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool addFacilities(SqlConnection conn, string fName, string fImage,string fDescription, string fContent)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_addFacilities";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@fName", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@fImage", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@fDescription", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@fContent", SqlDbType.VarChar));

            //Truyen gia tri cho Store
            comm.Parameters["@fName"].Value = fName;
            comm.Parameters["@fImage"].Value = fImage;
            comm.Parameters["@fDescription"].Value = fDescription;
            comm.Parameters["@fContent"].Value = fContent;



            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method thêm mới tiện nghi
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool addAchievement(SqlConnection conn, string acTitle, string acImage, string acDescription)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_addAchievement";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@acTitle", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@acImage", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@acDescription", SqlDbType.VarChar));

            //Truyen gia tri cho Store
            comm.Parameters["@acTitle"].Value = acTitle;
            comm.Parameters["@acImage"].Value = acImage;
            comm.Parameters["@acDescription"].Value = acDescription;

            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method update tiện nghi
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool updateFacilities(SqlConnection conn,int fID, string fName, string fImage, string fDescription, string fContent)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_updateFacilities";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@fID", SqlDbType.Int));
            comm.Parameters.Add(new SqlParameter("@fName", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@fImage", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@fDescription", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@fContent", SqlDbType.VarChar));

            //Truyen gia tri cho Store
            comm.Parameters["@fID"].Value = fID;
            comm.Parameters["@fName"].Value = fName;
            comm.Parameters["@fImage"].Value = fImage;
            comm.Parameters["@fDescription"].Value = fDescription;
            comm.Parameters["@fContent"].Value = fContent;


            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method update tiện nghi
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool updateAchivement(SqlConnection conn, int acID, string acTitle, string acImage, string acDescription)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_updateAchievement";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@acID", SqlDbType.Int));
            comm.Parameters.Add(new SqlParameter("@acTitle", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@acImage", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@acDescription", SqlDbType.VarChar));

            //Truyen gia tri cho Store
            comm.Parameters["@acID"].Value = acID;
            comm.Parameters["@acTitle"].Value = acTitle;
            comm.Parameters["@acImage"].Value = acImage;
            comm.Parameters["@acDescription"].Value = acDescription;

            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method xoa tiện nghi
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool removeFacilities(SqlConnection conn, int fID)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_removeFacilities";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@fID", SqlDbType.Int));

            //Truyen gia tri cho Store
            comm.Parameters["@fID"].Value = fID;



            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method xoa tiện nghi
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool removeAchievement(SqlConnection conn, int acID)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_removeAchievement";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@acID", SqlDbType.Int));

            //Truyen gia tri cho Store
            comm.Parameters["@acID"].Value = acID;



            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ kiểm tra xem email đã tồn tại chưa
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các khóa học</returns>
    public bool checkEmail(SqlConnection conn, string email)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_checkEmailAdmission";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@email", email));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            if (ds.Tables[0].Rows.Count > 0)
            {
                return false;
            }

            // Tạo SqlComman để chạy Store procedure
            comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_checkEmailStudent";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@email", email));

            // Tạo Dataset lưu dữ liệu
            ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            if (ds.Tables[0].Rows.Count > 0)
            {
                return false;
            }

            // Tạo SqlComman để chạy Store procedure
            comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_checkEmailStaff";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@email", email));

            // Tạo Dataset lưu dữ liệu
            ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            if (ds.Tables[0].Rows.Count > 0)
            {
                return false;
            }

            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ trả về id của addmission theo email
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về id nếu thành công và null nếu có lỗi</returns>
    public string getIDOfAddmissionByEmail(SqlConnection conn, string email)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_showAdmissionByEmail";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@email", email));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            if (ds.Tables[0].Rows.Count > 0)
            {
                return ds.Tables[0].Rows[0][0].ToString();
            }
            else
            {
                return null;
            }
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ trả về id của addmission theo email
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về string nếu thành công và null nếu có lỗi</returns>
    public string getStatusAddmissionByID(SqlConnection conn, int id)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_showAdmissionByID";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@aID", id));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            if (ds.Tables[0].Rows.Count > 0)
            {
                return ds.Tables[0].Rows[0][9].ToString();
            }
            else
            {
                return null;
            }
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }
    /// <summary>
    /// Method này có nhiệm vụ trả về id giáo viên
    /// </summary>
    /// <returns>dataset chưa 12 tháng</returns>
    public DataSet getIDTeacher(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_getIDTeacher";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            
            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            if (ds.Tables[0].Rows.Count > 0)
            {
                return ds;
            }
            else
            {
                return null;
            }
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }
    /// <summary>
    /// Method có nhiệm vụ hiển thị tiện nghi của trường
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showFacilities(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showFacilities";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị tiện nghi của trường
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showFacilitiesForMaintain(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showFacilitiesForMaintain";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị thanh tuu của trường
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showAchievementForMaintain(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showAchievementForMaintain";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }


    /// <summary>
    /// Method có nhiệm vụ hiển thị tiện nghi của trường by ID
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showFacilitiesByID(SqlConnection conn,int fID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showFacilitiesByID";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@fID", fID));

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị phòng ban của trường
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showDepartment(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showAllDepartment";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị phòng ban của trường
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showDepartmentForMaintain(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showAllDepartmentForMaintain";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị phòng ban của trường by ID
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showDepartmentByID(SqlConnection conn, int dID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showDepartmentByID";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@dID", dID));

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị phòng ban của trường by ID
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showFaculty(SqlConnection conn, int dID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showFaculty";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@dID", dID));

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị phòng ban của trường by ID
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showFacultyByID(SqlConnection conn, int stID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showFacultyByID";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@stID", stID));

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }


    /// <summary>
    /// Method có nhiệm vụ hiển thị môn by ID
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showSubjectByID(SqlConnection conn, string dID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showSubjectByID";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@sID", SqlDbType.Char));
            comm.Parameters["@sID"].Value = dID;
            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị subjects của trường
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showTeacher(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showTeacher";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị subjects của trường
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showSubject(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showSubject";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }
    /// <summary>
    /// Method có nhiệm vụ hiển thị subjects của trường
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet checkIDSubject(SqlConnection conn,string id)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_checkIDSub";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@id", id));

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }
    
    /// <summary>
    /// Method có nhiệm vụ lấy id của course vừa add
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về id của course vừa add</returns>
    public int getLastestCourseID(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showCoursesForGetID";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString());
        }
        catch (Exception)
        {
            return -1;
        }
        finally
        {
            conn.Close();
        }

    }

    /// <summary>
    /// tao method them moi timetable
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool addTimeTable(SqlConnection conn, int ttCourseID, bool ttMonday, bool ttTuesday, bool ttWednesday, bool ttThursday, bool ttFriday, bool ttSaturday, bool ttSunday, DateTime ttTimeStart, DateTime ttTimeEnd)
    {
        try
        {
            //Tao SqlCommand de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_addTimeTable";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection vao cho comm
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@ttCourseID", SqlDbType.Int));
            comm.Parameters.Add(new SqlParameter("@ttMonday", SqlDbType.Bit));
            comm.Parameters.Add(new SqlParameter("@ttTuesday", SqlDbType.Bit));
            comm.Parameters.Add(new SqlParameter("@ttWednesday", SqlDbType.Bit));
            comm.Parameters.Add(new SqlParameter("@ttThursday", SqlDbType.Bit));
            comm.Parameters.Add(new SqlParameter("@ttFriday", SqlDbType.Bit));
            comm.Parameters.Add(new SqlParameter("@ttSaturday", SqlDbType.Bit));
            comm.Parameters.Add(new SqlParameter("@ttSunday", SqlDbType.Bit));
            comm.Parameters.Add(new SqlParameter("@ttTimeStart", SqlDbType.DateTime));
            comm.Parameters.Add(new SqlParameter("@ttTimeEnd", SqlDbType.DateTime));

            comm.Parameters["@ttCourseID"].Value = ttCourseID;
            if (ttMonday)
            {
                comm.Parameters["@ttMonday"].Value = 1;
            }
            else
            {
                comm.Parameters["@ttMonday"].Value = 0;
            }

            if (ttTuesday)
            {
                comm.Parameters["@ttTuesday"].Value = 1;
            }
            else
            {
                comm.Parameters["@ttTuesday"].Value = 0;
            }

            if (ttWednesday)
            {
                comm.Parameters["@ttWednesday"].Value = 1;
            }
            else
            {
                comm.Parameters["@ttWednesday"].Value = 0;
            }

            if (ttThursday)
            {
                comm.Parameters["@ttThursday"].Value = 1;
            }
            else
            {
                comm.Parameters["@ttThursday"].Value = 0;
            }

            if (ttFriday)
            {
                comm.Parameters["@ttFriday"].Value = 1;
            }
            else
            {
                comm.Parameters["@ttFriday"].Value = 0;
            }

            if (ttSaturday)
            {
                comm.Parameters["@ttSaturday"].Value = 1;
            }
            else
            {
                comm.Parameters["@ttSaturday"].Value = 0;
            }

            if (ttSunday)
            {
                comm.Parameters["@ttSunday"].Value = 1;
            }
            else
            {
                comm.Parameters["@ttSunday"].Value = 0;
            }
                        
            comm.Parameters["@ttTimeStart"].Value = ttTimeStart;
            comm.Parameters["@ttTimeEnd"].Value = ttTimeEnd;

            //Thuc thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// tao method update timetable
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool updateTimeTable(SqlConnection conn, int ttCourseID, bool ttMonday, bool ttTuesday, bool ttWednesday, bool ttThursday, bool ttFriday, bool ttSaturday, bool ttSunday, DateTime ttTimeStart, DateTime ttTimeEnd)
    {
        try
        {
            //Tao SqlCommand de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_updateTimeTable";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection vao cho comm
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@ttCourseID", SqlDbType.Int));
            comm.Parameters.Add(new SqlParameter("@ttMonday", SqlDbType.Bit));
            comm.Parameters.Add(new SqlParameter("@ttTuesday", SqlDbType.Bit));
            comm.Parameters.Add(new SqlParameter("@ttWednesday", SqlDbType.Bit));
            comm.Parameters.Add(new SqlParameter("@ttThursday", SqlDbType.Bit));
            comm.Parameters.Add(new SqlParameter("@ttFriday", SqlDbType.Bit));
            comm.Parameters.Add(new SqlParameter("@ttSaturday", SqlDbType.Bit));
            comm.Parameters.Add(new SqlParameter("@ttSunday", SqlDbType.Bit));
            comm.Parameters.Add(new SqlParameter("@ttTimeStart", SqlDbType.DateTime));
            comm.Parameters.Add(new SqlParameter("@ttTimeEnd", SqlDbType.DateTime));

            comm.Parameters["@ttCourseID"].Value = ttCourseID;
            if (ttMonday)
            {
                comm.Parameters["@ttMonday"].Value = 1;
            }
            else
            {
                comm.Parameters["@ttMonday"].Value = 0;
            }

            if (ttTuesday)
            {
                comm.Parameters["@ttTuesday"].Value = 1;
            }
            else
            {
                comm.Parameters["@ttTuesday"].Value = 0;
            }

            if (ttWednesday)
            {
                comm.Parameters["@ttWednesday"].Value = 1;
            }
            else
            {
                comm.Parameters["@ttWednesday"].Value = 0;
            }

            if (ttThursday)
            {
                comm.Parameters["@ttThursday"].Value = 1;
            }
            else
            {
                comm.Parameters["@ttThursday"].Value = 0;
            }

            if (ttFriday)
            {
                comm.Parameters["@ttFriday"].Value = 1;
            }
            else
            {
                comm.Parameters["@ttFriday"].Value = 0;
            }

            if (ttSaturday)
            {
                comm.Parameters["@ttSaturday"].Value = 1;
            }
            else
            {
                comm.Parameters["@ttSaturday"].Value = 0;
            }

            if (ttSunday)
            {
                comm.Parameters["@ttSunday"].Value = 1;
            }
            else
            {
                comm.Parameters["@ttSunday"].Value = 0;
            }

            comm.Parameters["@ttTimeStart"].Value = ttTimeStart;
            comm.Parameters["@ttTimeEnd"].Value = ttTimeEnd;

            //Thuc thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ  hiển thị list student để maintain
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public DataSet showStudentsForMaintainIDDESC(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_showStudentsForMaintainIDDESC";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method xoa student
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool removeStudent(SqlConnection conn, string stuID)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_removeStudent";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@stuID", SqlDbType.Char,6));

            //Truyen gia tri cho Store
            comm.Parameters["@stuID"].Value = stuID;

            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ thêm học sinh mới
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool addStudent(SqlConnection conn, string id, string firstName, string lastName, string username, string password, int gender, DateTime dateOfBirth, string street, string state, string city, string phoneNumber, string email, string image)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_addStudent";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@stuID", SqlDbType.Char));

            comm.Parameters.Add(new SqlParameter("@stuFirstName", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stuLastName", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stuUsername", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stuPassword", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stuGender", SqlDbType.Bit));

            comm.Parameters.Add(new SqlParameter("@stuDateOfBirth", SqlDbType.DateTime));

            comm.Parameters.Add(new SqlParameter("@stuStreetAddress", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stuState", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stuCity", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stuPhoneNumber", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stuEmail", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stuImage", SqlDbType.VarChar));

            comm.Parameters["@stuID"].Value = id;
            comm.Parameters["@stuFirstName"].Value = firstName;
            comm.Parameters["@stuLastName"].Value = lastName;
            comm.Parameters["@stuUsername"].Value = username;
            comm.Parameters["@stuPassword"].Value = password;
            comm.Parameters["@stuGender"].Value = gender;
            comm.Parameters["@stuDateOfBirth"].Value = dateOfBirth;
            comm.Parameters["@stuStreetAddress"].Value = street;
            comm.Parameters["@stustate"].Value = state;
            comm.Parameters["@stuCity"].Value = city;
            comm.Parameters["@stuPhoneNumber"].Value = phoneNumber;
            comm.Parameters["@stuEmail"].Value = email;
            comm.Parameters["@stuImage"].Value = image;

            //Thực thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();

            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ sua học sinh
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool editStudent(SqlConnection conn, string id, string firstName, string lastName, int gender, DateTime dateOfBirth, string street, string state, string city, string phoneNumber, string email, string image)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_editStudent";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@stuID", SqlDbType.Char));

            comm.Parameters.Add(new SqlParameter("@stuFirstName", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stuLastName", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stuGender", SqlDbType.Bit));

            comm.Parameters.Add(new SqlParameter("@stuDateOfBirth", SqlDbType.DateTime));

            comm.Parameters.Add(new SqlParameter("@stuStreetAddress", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stuState", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stuCity", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stuPhoneNumber", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stuEmail", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stuImage", SqlDbType.VarChar));

            comm.Parameters["@stuID"].Value = id;
            comm.Parameters["@stuFirstName"].Value = firstName;
            comm.Parameters["@stuLastName"].Value = lastName;
            comm.Parameters["@stuGender"].Value = gender;
            comm.Parameters["@stuDateOfBirth"].Value = dateOfBirth;
            comm.Parameters["@stuStreetAddress"].Value = street;
            comm.Parameters["@stustate"].Value = state;
            comm.Parameters["@stuCity"].Value = city;
            comm.Parameters["@stuPhoneNumber"].Value = phoneNumber;
            comm.Parameters["@stuEmail"].Value = email;
            comm.Parameters["@stuImage"].Value = image;

            //Thực thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();

            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method hien thi studen theo id
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về datset nếu thành công và null nếu có lỗi</returns>
    public DataSet showStudentByID(SqlConnection conn, string stuID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showStudentsByID";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@stuID", SqlDbType.Char));
            comm.Parameters["@stuID"].Value = stuID;
            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method tim kiem student theo firstname va lastname
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về datset nếu thành công và null nếu có lỗi</returns>
    public DataSet searchStudentByName(SqlConnection conn, string id, string firstname, string lastName)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showStudentsForMaintainByName";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@stuID", SqlDbType.Char));
            comm.Parameters.Add(new SqlParameter("@stuFirstName", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@stuLastName", SqlDbType.VarChar));

            if (id.Length == 0)
            {
                comm.Parameters["@stuID"].Value = DBNull.Value;
            }
            else {
                comm.Parameters["@stuID"].Value = id;
            }

            if (firstname.Length == 0)
            {
                comm.Parameters["@stuFirstName"].Value = DBNull.Value;
            }
            else
            {
                comm.Parameters["@stuFirstName"].Value = firstname;
            }

            if (lastName.Length == 0)
            {
                comm.Parameters["@stuLastName"].Value = DBNull.Value;
            }
            else
            {
                comm.Parameters["@stuLastName"].Value = lastName;
            }

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method tim kiem student theo firstname va lastname
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về datset nếu thành công và null nếu có lỗi</returns>
    public DataSet searchCourse(SqlConnection conn, string cName, string cSubjectID, int tearcheID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_searchCourses";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@cName", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@cSubjectID", SqlDbType.Char));
            comm.Parameters.Add(new SqlParameter("@cTeacherID", SqlDbType.Int));

            if (cName.Length == 0)
            {
                comm.Parameters["@cName"].Value = DBNull.Value;
            }
            else
            {
                comm.Parameters["@cName"].Value = cName;
            }

            comm.Parameters["@cSubjectID"].Value = cSubjectID;

            comm.Parameters["@cTeacherID"].Value = tearcheID;
            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method tim kiem student theo firstname va lastname
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về datset nếu thành công và null nếu có lỗi</returns>
    public DataSet searchCourseEventEnd(SqlConnection conn, string cName, string cSubjectID, int tearcheID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_searchCoursesEventEnd";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@cName", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@cSubjectID", SqlDbType.Char));
            comm.Parameters.Add(new SqlParameter("@cTeacherID", SqlDbType.Int));

            if (cName.Length == 0)
            {
                comm.Parameters["@cName"].Value = DBNull.Value;
            }
            else
            {
                comm.Parameters["@cName"].Value = cName;
            }

            comm.Parameters["@cSubjectID"].Value = cSubjectID;

            comm.Parameters["@cTeacherID"].Value = tearcheID;
            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ  hiển thị cac ban dang ky nhap hoc
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public DataSet showAdmission(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_show2AllAdmission";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ  hiển thị list student để maintain
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public DataSet showEmployeeForMaintain(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_showEmployeeForMaintain";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method xoa student
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool removeEmployee(SqlConnection conn, int stID)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_removeEmployee";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@stID", SqlDbType.Int));

            //Truyen gia tri cho Store
            comm.Parameters["@stID"].Value = stID;

            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị position của trường
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showPosition(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showPosition";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }

    /// <summary>
    /// Method có nhiệm vụ kiểm tra xem employee username đã tồn tại chưa
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các khóa học</returns>
    public bool checkEmployeeUsername(SqlConnection conn, string username)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_checkEmployeeUsername";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@username", username));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            if (ds.Tables[0].Rows.Count > 0)
            {
                return false;
            }


            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ thêm employee mới
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool addEmployee(SqlConnection conn, string firstName, string lastName, string username, string password, string position, int department, int gender, DateTime dateOfBirth, DateTime dateOfStart, string street, string state, string city, string phoneNumber, string email, string image, string description)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_addEmployee";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@stFirstName", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stLastName", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stUsername", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stPassword", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stPosition", SqlDbType.Char));

            comm.Parameters.Add(new SqlParameter("@stDepartment", SqlDbType.Int));

            comm.Parameters.Add(new SqlParameter("@stGender", SqlDbType.Bit));

            comm.Parameters.Add(new SqlParameter("@stDateOfBirth", SqlDbType.DateTime));

            comm.Parameters.Add(new SqlParameter("@stDateOfStart", SqlDbType.DateTime));

            comm.Parameters.Add(new SqlParameter("@stStreetAddress", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stState", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stCity", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stPhoneNumber", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stEmail", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stImage", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stDescription", SqlDbType.VarChar));

            comm.Parameters["@stFirstName"].Value = firstName;
            comm.Parameters["@stLastName"].Value = lastName;
            comm.Parameters["@stUsername"].Value = username;
            comm.Parameters["@stPassword"].Value = password;
            comm.Parameters["@stPosition"].Value = position;
            comm.Parameters["@stDepartment"].Value = department;
            comm.Parameters["@stGender"].Value = gender;
            comm.Parameters["@stDateOfBirth"].Value = dateOfBirth;
            comm.Parameters["@stDateOfStart"].Value = dateOfStart;
            comm.Parameters["@stStreetAddress"].Value = street;
            comm.Parameters["@ststate"].Value = state;
            comm.Parameters["@stCity"].Value = city;
            comm.Parameters["@stPhoneNumber"].Value = phoneNumber;
            comm.Parameters["@stEmail"].Value = email;
            comm.Parameters["@stImage"].Value = image;
            comm.Parameters["@stDescription"].Value = description;

            //Thực thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();

            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ sua employee
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool editEmployee(SqlConnection conn,int id, string firstName, string lastName, string position, int department, int gender, DateTime dateOfBirth, string street, string state, string city, string phoneNumber, string email, string image, string description)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_editEmployee";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@stID", SqlDbType.Int));

            comm.Parameters.Add(new SqlParameter("@stFirstName", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stLastName", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stPosition", SqlDbType.Char));

            comm.Parameters.Add(new SqlParameter("@stDepartment", SqlDbType.Int));

            comm.Parameters.Add(new SqlParameter("@stGender", SqlDbType.Bit));

            comm.Parameters.Add(new SqlParameter("@stDateOfBirth", SqlDbType.DateTime));

            comm.Parameters.Add(new SqlParameter("@stStreetAddress", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stState", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stCity", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stPhoneNumber", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stEmail", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stImage", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@stDescription", SqlDbType.VarChar));

            comm.Parameters["@stID"].Value = id;
            comm.Parameters["@stFirstName"].Value = firstName;
            comm.Parameters["@stLastName"].Value = lastName;
            comm.Parameters["@stPosition"].Value = position;
            comm.Parameters["@stDepartment"].Value = department;
            comm.Parameters["@stGender"].Value = gender;
            comm.Parameters["@stDateOfBirth"].Value = dateOfBirth;
            comm.Parameters["@stStreetAddress"].Value = street;
            comm.Parameters["@ststate"].Value = state;
            comm.Parameters["@stCity"].Value = city;
            comm.Parameters["@stPhoneNumber"].Value = phoneNumber;
            comm.Parameters["@stEmail"].Value = email;
            comm.Parameters["@stImage"].Value = image;
            comm.Parameters["@stDescription"].Value = description;

            //Thực thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();

            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method hien thi employee theo id
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về datset nếu thành công và null nếu có lỗi</returns>
    public DataSet showEmployeeByID(SqlConnection conn, int stID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_showEmployeeByID";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@stID", SqlDbType.Int));
            comm.Parameters["@stID"].Value = stID;
            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method tim kiem student theo firstname va lastname
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về datset nếu thành công và null nếu có lỗi</returns>
    public DataSet searchEmployeeByName(SqlConnection conn, string firstname, string lastName, string position, int department)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_searchEmployee";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@stFirstName", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@stLastName", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@stPosition", SqlDbType.Char));
            comm.Parameters.Add(new SqlParameter("@stDepartment", SqlDbType.Int));

            if (firstname.Length == 0)
            {
                comm.Parameters["@stFirstName"].Value = DBNull.Value;
            }
            else
            {
                comm.Parameters["@stFirstName"].Value = firstname;
            }

            if (lastName.Length == 0)
            {
                comm.Parameters["@stLastName"].Value = DBNull.Value;
            }
            else
            {
                comm.Parameters["@stLastName"].Value = lastName;
            }

            comm.Parameters["@stPosition"].Value = position;

            comm.Parameters["@stDepartment"].Value = department;

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method login
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <param name="type">search theo gi? 1-student, 2-employee</param>
    /// <returns>Trả về datset nếu thành công và null nếu có lỗi</returns>
    public DataSet login(SqlConnection conn, int type, string username, string password)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store

            if (type == 1)
            {
                comm.CommandText = "sp_loginStudent"; 
            }
            else if (type == 2)
            {
                comm.CommandText = "sp_loginEmployee";
            }
            else {
                return null;
            }

            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@username", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@password", SqlDbType.VarChar));

            comm.Parameters["@username"].Value = username;
            comm.Parameters["@password"].Value = password;
            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ thêm ban dang ky vao khoa hoc
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool addRegistraionCourse(SqlConnection conn, int lsCourseID, string lsStudentID)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_addListStudentRegistrationOfCourse";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@lsCourseID", SqlDbType.Int));

            comm.Parameters.Add(new SqlParameter("@lsStudentID", SqlDbType.Char));

            comm.Parameters["@lsCourseID"].Value = lsCourseID;
            comm.Parameters["@lsStudentID"].Value = lsStudentID;
            //Thực thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();

            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị cac ban dang ky khoa hoc cua hoc sinh
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showCoursesRegisByStudentID(SqlConnection conn, int type,string stuID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            if (type == 1)
            {
                comm.CommandText = "sp_showCoursesRegisByStudentIDChecking"; 
            }
            else if (type == 2)
            {
                comm.CommandText = "sp_showCoursesRegisByStudentIDReject";
            }

            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@stuID", stuID));

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị cac ban dang ky khoa hoc cua hoc sinh
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet checkCoursesRegisByStudentID(SqlConnection conn, int courseID, string stuID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_checkListStudentRegistrationOfCourse";

            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@lsCourseID", courseID));
            comm.Parameters.Add(new SqlParameter("@lsStudentID", stuID));

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }

    /// <summary>
    /// method xoa su kien
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>

    public bool removeStudentRegistrationOfCourse(SqlConnection conn, int lsID)
    {
        try
        {
            //Tao command de chay Store
            SqlCommand comm = new SqlCommand();
            //CommandText
            comm.CommandText = "sp_removeStudentRegistrationOfCourse";
            //CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            //Truyen connection cho command
            comm.Connection = conn;
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@lsID", SqlDbType.Int));

            //Truyen gia tri cho Store
            comm.Parameters["@lsID"].Value = lsID;

            //Thuc Thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị cac ban dang ky khoa hoc cua hoc sinh
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showCoursesRegisByCourseID(SqlConnection conn, int courseID)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store

            comm.CommandText = "sp_showAllRegisOfCourse";

            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@cID", courseID));

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }

    }

    /// <summary>
    /// tao method thay đổi trạng thái bản đăng ký nhập học thành chấp nhận
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool updateRegisOfCourse(SqlConnection conn, int lsID, int aStatus)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_updateRegisOfCourse";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@lsID", SqlDbType.Int));

            comm.Parameters.Add(new SqlParameter("@aStatus", SqlDbType.Int));

            comm.Parameters["@lsID"].Value = lsID;
            comm.Parameters["@aStatus"].Value = aStatus;

            //Thực thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();

            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ thêm ban dang ky vao khoa hoc
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool addStudentOfCourse(SqlConnection conn, int lsCourseID, string lsStudentID)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_addListStudentOfCourse";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@lsCourseID", SqlDbType.Int));

            comm.Parameters.Add(new SqlParameter("@lsStudentID", SqlDbType.Char));

            comm.Parameters["@lsCourseID"].Value = lsCourseID;
            comm.Parameters["@lsStudentID"].Value = lsStudentID;
            //Thực thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();

            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị account cua student
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <param name="type">1 - student accounts; 2-employee accounts</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showAccount(SqlConnection conn, int type)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            if (type == 1)
            {
                comm.CommandText = "sp_showAllStudentAccounts";
            }
            else if (type == 2)
            {
                comm.CommandText = "sp_showAllEmployeeAccounts";
            }
            else {
                return null;
            }
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method tim kiem student theo firstname va lastname
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về datset nếu thành công và null nếu có lỗi</returns>
    public DataSet searchAccount(SqlConnection conn,string id, string firstname, string lastName, string username)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_searchStudentAccounts";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@stuID", SqlDbType.Char));
            comm.Parameters.Add(new SqlParameter("@stuFirstName", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@stuLastName", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@stuUsername", SqlDbType.VarChar));

            if (id.Length == 0)
            {
                comm.Parameters["@stuID"].Value = DBNull.Value;
            }
            else
            {
                comm.Parameters["@stuID"].Value = id;
            }

            if (firstname.Length == 0)
            {
                comm.Parameters["@stuFirstName"].Value = DBNull.Value;
            }
            else
            {
                comm.Parameters["@stuFirstName"].Value = firstname;
            }

            if (lastName.Length == 0)
            {
                comm.Parameters["@stuLastName"].Value = DBNull.Value;
            }
            else
            {
                comm.Parameters["@stuLastName"].Value = lastName;
            }

            if (username.Length == 0)
            {
                comm.Parameters["@stuUsername"].Value = DBNull.Value;
            }
            else
            {
                comm.Parameters["@stuUsername"].Value = username;
            }
            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method tim kiem new
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về datset nếu thành công và null nếu có lỗi</returns>
    public DataSet searchNew(SqlConnection conn, string title)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_searchNews";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@nTitle", SqlDbType.VarChar));

            comm.Parameters["@nTitle"].Value = title;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method tim kiem event
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về datset nếu thành công và null nếu có lỗi</returns>
    public DataSet searchEvent(SqlConnection conn, string title)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_searchEvent";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@eTitle", SqlDbType.VarChar));

            comm.Parameters["@eTitle"].Value = title;

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// method tim kiem student theo firstname va lastname
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về datset nếu thành công và null nếu có lỗi</returns>
    public DataSet searchAccountEmployee(SqlConnection conn, int id, string firstname, string lastName, string username)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText chưa tên của store
            comm.CommandText = "sp_searchEmployeeAccounts";
            // CommandType là kiểu của command, ở đây là StoredProcedure
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;
            // Truyền tham số cho Store
            //Truyen tham so cho Store
            comm.Parameters.Add(new SqlParameter("@stID", SqlDbType.Int));
            comm.Parameters.Add(new SqlParameter("@stFirstName", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@stLastName", SqlDbType.VarChar));
            comm.Parameters.Add(new SqlParameter("@stUsername", SqlDbType.VarChar));

            comm.Parameters["@stID"].Value = id;

            if (firstname.Length == 0)
            {
                comm.Parameters["@stFirstName"].Value = DBNull.Value;
            }
            else
            {
                comm.Parameters["@stFirstName"].Value = firstname;
            }

            if (lastName.Length == 0)
            {
                comm.Parameters["@stLastName"].Value = DBNull.Value;
            }
            else
            {
                comm.Parameters["@stLastName"].Value = lastName;
            }

            if (username.Length == 0)
            {
                comm.Parameters["@stUsername"].Value = DBNull.Value;
            }
            else
            {
                comm.Parameters["@stUsername"].Value = username;
            }
            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để tạo tham số
            //comm.Parameters.Add(new SqlParameter("@teachID", SqlDbType.Int));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Trong trường hợp store có tham số truyền vào thì thêm dòng lệnh dưới đây để gán dữ liệu vào tham số
            //adapt.SelectCommand.Parameters[0].Value = 1;

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// tao method thay đổi trạng thái bản đăng ký nhập học thành chấp nhận
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool resetPasswordStudent(SqlConnection conn, string stuID, string password)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_resetPasswordStudent";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@stuID", SqlDbType.Char));
            comm.Parameters.Add(new SqlParameter("@password", SqlDbType.VarChar));

            comm.Parameters["@stuID"].Value = stuID;
            comm.Parameters["@password"].Value = password;

            //Thực thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();

            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// tao method thay đổi trạng thái bản đăng ký nhập học thành chấp nhận
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool resetPasswordEmployee(SqlConnection conn, int stID, string password)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_resetPasswordEmployee";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@stID", SqlDbType.Int));
            comm.Parameters.Add(new SqlParameter("@password", SqlDbType.VarChar));

            comm.Parameters["@stID"].Value = stID;
            comm.Parameters["@password"].Value = password;

            //Thực thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();

            return true;
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ hiển thị sự kiện theo id
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database</param>
    /// <returns>Trả về dataset chứa tất cả các tin tức</returns>
    public DataSet showAchievementByID(SqlConnection conn, int id)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_showAchievementsByID";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@acID", id));

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ thêm feedback
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool addNewfeedback(SqlConnection conn, string fbName, string fbTitle, string fbEmail, string fbContent)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_addNewFeedback";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@fbName", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@fbTitle", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@fbEmail", SqlDbType.VarChar));

            comm.Parameters.Add(new SqlParameter("@fbContent", SqlDbType.VarChar));

            comm.Parameters["@fbName"].Value = fbName;

            comm.Parameters["@fbTitle"].Value = fbTitle;

            comm.Parameters["@fbEmail"].Value = fbEmail;

            comm.Parameters["@fbContent"].Value = fbContent;

            //Thực thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;


        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ  hiển thị cac feedback chua check
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public DataSet showFeedback(SqlConnection conn)
    {
        try
        {
            conn.Open();

            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_showFeedbackNotCheck";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Tạo Dataset lưu dữ liệu
            DataSet ds = new DataSet();

            // Tạo adapter để fill dữ liệu, truyền vào command
            SqlDataAdapter adapt = new SqlDataAdapter(comm);

            // Fill dữ liệu vào Dataset
            adapt.Fill(ds);

            return ds;
        }
        catch (Exception)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }

    /// <summary>
    /// Method có nhiệm vụ sua trang thai feedback
    /// </summary>
    /// <param name="conn">Truyền vào SqlConnection kết nối với database và tham số cho store</param>
    /// <returns>Trả về true nếu thành công và false nếu có lỗi</returns>
    public bool updateFeedbackChecked(SqlConnection conn, int fbID)
    {
        try
        {
            // Tạo SqlComman để chạy Store procedure
            SqlCommand comm = new SqlCommand();

            // CommandText
            comm.CommandText = "sp_updateFeedbackStatus";
            // CommandType
            comm.CommandType = System.Data.CommandType.StoredProcedure;
            // Truyền vào connection cho command
            comm.Connection = conn;

            // Truyền tham số cho Store
            comm.Parameters.Add(new SqlParameter("@fbID", SqlDbType.Int));

            comm.Parameters["@fbID"].Value = fbID;

            //Thực thi
            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
            return true;


        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            conn.Close();
        }
    }
}